<?php

/**
 * 桥接模式 桥接模式倾向于使用组合而不是继承，实现细节从一个层次结构推送到另一个单独层次结构的对象。
 * Class Bridge
 */

// 每个页面可以有多个主题选择，主题相关通过注入到页面类，使页面可以选择不同的主题。

// 网页接口
interface WebPage
{
    // 通过组合，实现主题的控制
    public function __construct(Theme $theme);

    public function getContent();
}

class About implements WebPage
{
    protected $theme;

    public function __construct(Theme $theme)
    {
        $this->theme = $theme;
    }

    public function getContent()
    {
        return "About Page in " . $this->theme->getColor();
    }
}

class Careers implements WebPage
{
    protected $theme;

    public function __construct(Theme $theme)
    {
        $this->theme = $theme;
    }

    public function getContent()
    {
        return "Careers Page in " . $this->theme->getColor();
    }
}



// 主题接口
interface Theme
{
    public function getColor();
}

class DarkTheme implements Theme
{
    public function getColor()
    {
        return 'Dark Black';
    }
}

class LightTheme implements Theme
{
    public function getColor()
    {
        return 'Off White';
    }
}

class AquaTheme implements Theme
{
    public function getColor()
    {
        return 'Light blue';
    }
}


